package org.go;

import java.io.Serializable;
import java.util.List;

import org.go.expcetion.GoException;
import org.go.expcetion.WorkExecutionException;
import org.go.work.WorkParam;

/**
 * 
 * @author hejie
 *
 */
public interface Go<T> extends Serializable, Cloneable {
	/**
	 * 根据条件，查询当前调度服务器可处理的任务
	 * @param taskParameter 任务的自定义参数
	 * @param ownSign 当前环境名称 
	 * @param taskItemNum 当前任务类型的任务队列数量
	 * @param workParamList 当前调度服务器，分配到的可处理队列
	 * @param eachFetchDataNum 每次获取数据的数量
	 * @return
	 * @throws GoException
	 */
	List<T> selectWork(String taskParameter, String ownSign, int taskItemNum, List<WorkParam> workParamList, int eachFetchDataNum) throws GoException;

	/**
	 * 执行可处理的任务	
	 * @param context
	 * @throws WorkExecutionException
	 */
	Boolean doWork(GoContext<T> context) throws WorkExecutionException;
}
